package com.mlethe.library.calendarview;

import android.os.SystemClock;

import java.util.Calendar;
import java.util.TimeZone;

/**
 * 自定义当前时间管理
 *
 * @Author Mlethe
 * @Date 2023/5/19
 */
final class CustomTime {

    /**
     * 以前自定义当前时间 - 以前自定义当前的获取时刻的系统启动时间
     */
    private long differenceTime = 0;

    /**
     * 自定义当前时间的时区
     */
    private TimeZone timeZone = null;

    /**
     * 是否是自定义当前时间
     */
    private boolean isCustomTime = false;

    /**
     * 获取当前时间的时间戳
     *
     * @return 时间戳
     */
    public long getCurrentTime() {
        if (!isCustomTime) {
            // 这里可以加上触发获取服务器时间操作
            return System.currentTimeMillis();
        } else {
            // 时间差加上当前手机启动时间就是准确的服务器时间了
            return differenceTime + SystemClock.elapsedRealtime();
        }
    }

    /**
     * 获取自定义当前时间的时区
     *
     * @return 时区
     */
    public TimeZone getTimeZone() {
        return timeZone;
    }

    /**
     * 获取 Calendar
     *
     * @return
     */
    public Calendar getCalendar() {
        Calendar calendar = Calendar.getInstance();
        calendar.clear();
        TimeZone timeZone = getTimeZone();
        if (timeZone != null) {
            calendar.setTimeZone(timeZone);
        }
        calendar.setTimeInMillis(getCurrentTime());
        return calendar;
    }

    /**
     * 设置当前时间
     *
     * @param time 时间戳
     */
    public void setCurrentTime(long time, TimeZone timeZone) {
        this.differenceTime = time - SystemClock.elapsedRealtime();
        this.timeZone = timeZone;
        this.isCustomTime = true;
    }
}
